Notifications এবং Background Execution

Mobile App Development - আইওএস ডেভেলপমেন্ট (iOS)
287

iOS অ্যাপ্লিকেশনে Notifications এবং Background Execution খুবই গুরুত্বপূর্ণ, কারণ এগুলোর মাধ্যমে অ্যাপ ব্যবহারকারীর সাথে যোগাযোগ রাখতে পারে এবং ব্যাকগ্রাউন্ডে কাজ চালাতে পারে। Notifications মূলত ব্যবহারকারীকে গুরুত্বপূর্ণ তথ্য জানাতে সাহায্য করে এবং Background Execution ব্যবহার করে অ্যাপ ডেটা প্রসেসিং, লোকেশন আপডেট, এবং ডাউনলোড বা আপলোডের মতো কাজ চালাতে পারে, যখন অ্যাপ ব্যাকগ্রাউন্ডে থাকে। নিচে Notifications এবং Background Execution নিয়ে বিস্তারিত আলোচনা করা হলো।

১. Notifications

iOS অ্যাপ্লিকেশনে Notifications ব্যবহার করে আমরা ব্যবহারকারীদের সাথে অ্যাপের ইন্টারেকশন বাড়াতে পারি। সাধারণত দুই ধরনের Notifications আছে:

  1. Local Notifications: অ্যাপের মধ্য থেকে নির্দিষ্ট সময় বা ঘটনার ভিত্তিতে Local Notifications পাঠানো হয়, যা ডিভাইসের অপারেটিং সিস্টেমের মাধ্যমে দেখানো হয়।
  2. Push Notifications (Remote Notifications): Remote সার্ভার থেকে Notifications পাঠানো হয়, যা ব্যবহারকারীদের কাছে গুরুত্বপূর্ণ আপডেট বা তথ্য জানাতে ব্যবহৃত হয়। এটি Apple এর APNs (Apple Push Notification Service) ব্যবহার করে ডেলিভার করা হয়।

Local Notification এর উদাহরণ

Local Notification কনফিগার করতে এবং পাঠাতে কিছু স্টেপ ফলো করতে হবে:

Step 1: অনুমতি প্রাপ্ত করা

প্রথমে, ব্যবহারকারীর কাছ থেকে Notifications এর জন্য অনুমতি প্রাপ্ত করতে হবে।

import UserNotifications

func requestNotificationPermission() {
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
        if granted {
            print("Permission granted")
        } else {
            print("Permission denied")
        }
    }
}

Step 2: Local Notification সেটআপ করা

func scheduleLocalNotification() {
    let content = UNMutableNotificationContent()
    content.title = "Reminder"
    content.body = "This is your scheduled reminder notification."
    content.sound = UNNotificationSound.default

    // ৫ সেকেন্ড পরে নোটিফিকেশন পাঠানো হবে
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    let request = UNNotificationRequest(identifier: "localNotification", content: content, trigger: trigger)
    
    UNUserNotificationCenter.current().add(request) { error in
        if let error = error {
            print("Error scheduling notification: \(error)")
        }
    }
}

ব্যাখ্যা:

  • UNUserNotificationCenter: এটি iOS এর Notification সিস্টেম ম্যানেজ করে।
  • UNMutableNotificationContent: নোটিফিকেশন কনটেন্ট তৈরি করে।
  • UNTimeIntervalNotificationTrigger: নির্দিষ্ট সময় পরে নোটিফিকেশন ট্রিগার করে।
  • UNNotificationRequest: নোটিফিকেশন রিকোয়েস্ট তৈরি করে এবং সেটি Notification Center এ যুক্ত করে।

Push Notification এর উদাহরণ

Push Notification সেটআপ করার জন্য কিছু স্টেপ ফলো করতে হয়:

  1. APNs Configuration: Apple Developer পোর্টাল থেকে APNs Key এবং Push Notification Capability কনফিগার করতে হবে।
  2. Firebase Cloud Messaging (FCM): Push Notification পরিচালনার জন্য FCM এর মতো সার্ভিস ব্যবহার করা যায়।
  3. Push Notification Payload: Remote সার্ভার থেকে JSON পে-লোডের মাধ্যমে Notifications পাঠানো হয়।

২. Background Execution

Background Execution এর মাধ্যমে iOS অ্যাপ্লিকেশন কিছু নির্দিষ্ট কাজ ব্যাকগ্রাউন্ডে চালাতে পারে, যেমন: ডেটা ফেচ করা, লোকেশন আপডেট করা, নেটওয়ার্ক টাস্ক ম্যানেজ করা, এবং আরও অনেক কিছু। iOS এ কিছু সাধারণ Background Execution পদ্ধতি নিচে দেখানো হলো:

  1. Background Fetch: অ্যাপ নির্দিষ্ট সময় অন্তর ডেটা রিফ্রেশ করতে পারে।
  2. Silent Push Notifications: Push Notification ব্যবহার করে অ্যাপকে ব্যাকগ্রাউন্ডে ডেটা আপডেট করতে বলা যায়, নোটিফিকেশন প্রদর্শন ছাড়াই।
  3. Background Processing (BGTaskScheduler): iOS 13 থেকে নতুন API, যা ব্যাকগ্রাউন্ডে লং-রানিং কাজ পরিচালনা করতে ব্যবহৃত হয়।
  4. Location Updates: অ্যাপ ব্যাকগ্রাউন্ডে থাকলেও লোকেশন আপডেট পেতে পারে।
  5. Background Download/Upload (URLSession): ব্যাকগ্রাউন্ডে ফাইল ডাউনলোড এবং আপলোড পরিচালনা করতে পারে।

Background Fetch এর উদাহরণ

Background Fetch কনফিগার করার জন্য AppDelegate এ কিছু কোড যোগ করতে হবে:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        application.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
        return true
    }
    
    func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        // ব্যাকগ্রাউন্ডে ডেটা ফেচ
        fetchDataInBackground { newData in
            if newData {
                completionHandler(.newData)
            } else {
                completionHandler(.noData)
            }
        }
    }
    
    func fetchDataInBackground(completion: @escaping (Bool) -> Void) {
        // নেটওয়ার্ক রিকোয়েস্ট বা ডেটা প্রসেসিং
        completion(true)
    }
}

Silent Push Notification এর উদাহরণ

Silent Push Notifications ব্যাকগ্রাউন্ডে অ্যাপকে ডেটা আপডেট করতে সাহায্য করে। এটি করতে নোটিফিকেশন পে-লোডে content-available: 1 যুক্ত করতে হয়।

{
    "aps": {
        "content-available": 1
    },
    "customData": {
        "type": "update",
        "value": "New data available"
    }
}

AppDelegate এ Silent Push Notification হ্যান্ডল করার কোড:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
    
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        // ডেটা ফেচ বা প্রসেস
        fetchDataInBackground { success in
            if success {
                completionHandler(.newData)
            } else {
                completionHandler(.failed)
            }
        }
    }
    
    func fetchDataInBackground(completion: @escaping (Bool) -> Void) {
        // নেটওয়ার্ক কল বা ডেটা প্রসেসিং
        completion(true)
    }
}

BGTaskScheduler ব্যবহার করে Background Processing

BGTaskScheduler iOS 13 থেকে একটি নতুন API, যা ব্যাকগ্রাউন্ড টাস্ক পরিচালনা করতে এবং শিডিউল করতে সাহায্য করে:

import BackgroundTasks

func scheduleAppRefresh() {
    let request = BGAppRefreshTaskRequest(identifier: "com.example.refresh")
    request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // ১৫ মিনিট পরে শিডিউল
    
    do {
        try BGTaskScheduler.shared.submit(request)
    } catch {
        print("Failed to schedule app refresh: \(error)")
    }
}

func handleAppRefresh(task: BGAppRefreshTask) {
    scheduleAppRefresh() // পুনরায় শিডিউল করা
    
    // ডেটা ফেচ করা
    fetchDataInBackground { success in
        task.setTaskCompleted(success: success)
    }
}

Location Updates এবং Background Execution

Location Updates ব্যাকগ্রাউন্ডে চালানোর জন্য অ্যাপের Capabilities ট্যাব থেকে Background Modes চালু করে Location Updates সিলেক্ট করতে হবে।

import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {
    let locationManager = CLLocationManager()
    
    override init() {
        super.init()
        locationManager.delegate = self
        locationManager.requestAlwaysAuthorization()
        locationManager.startUpdatingLocation()
    }
    
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let location = locations.last else { return }
        print("New location: \(location)")
    }
}

সেরা চর্চা

  1. Minimum Background Usage: ব্যাটারি এবং রিসোর্স সাশ্রয়ের জন্য শুধুমাত্র প্রয়োজনীয় টাস্ক ব্যাকগ্রাউন্ডে চালান।
  2. Error Handling নিশ্চিত করুন: Background Execution এর সময় সবসময় Error Handling এবং Retry Logic ব্যবহার করুন।
  3. Efficient Data Fetching: Background Fetch, Silent Push Notification ব্যবহার করে সঠিক সময়ে ডেটা রিফ্রেশ করুন।
  4. User Permission সঠিকভাবে নিন: Notifications বা Location Updates এর আগে ব্যবহারকারীর অনুমতি সঠিকভাবে নিন।

উপসংহার

iOS অ্যাপ্লিকেশনে Notifications এবং Background Execution ব্যবহার করে আমরা অ্যাপকে আরও রেসপন্সিভ এবং ইউজার-ফ্রেন্ডলি করে তুলতে পারি। Local এবং Push Notifications এর মাধ্যমে ব্যবহারকারীদের গুরুত্বপূর্ণ তথ্য জানানো যায়, এবং Background Execution এর মাধ্যমে অ্যাপকে ব্যাকগ্রাউন্ডে কার্যকরভাবে পরিচালনা করা যায়। iOS ডেভেলপারদের জন্য Notifications এবং Background Execution সম্পর্কে ভালো ধারণা থাকা খুবই গুরুত্বপূর্ণ, কারণ এগুলো অ্যাপের কার্যকারিতা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

Content added By

Local Notifications এবং Push Notifications

249

Local Notifications এবং Push Notifications iOS অ্যাপে ব্যবহারকারীকে গুরুত্বপূর্ণ তথ্য বা আপডেট জানানোর জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ নোটিফিকেশন পদ্ধতি। এগুলো ব্যবহার করে অ্যাপ্লিকেশন অ্যাপ্লিকেশন চালু না থাকলেও ব্যবহারকারীর কাছে মেসেজ পাঠাতে পারে। তবে, এই দুটি নোটিফিকেশনের মধ্যে কিছু মূল পার্থক্য রয়েছে।

Local Notifications

Local Notifications অ্যাপ্লিকেশনের ভেতর থেকে ট্রিগার করা হয় এবং ডিভাইসের মধ্যেই প্রসেস হয়। এটি সাধারণত অ্যাপ্লিকেশনের ইভেন্ট বা অ্যাপ্লিকেশনের কার্যক্রমের উপর ভিত্তি করে পাঠানো হয়। উদাহরণস্বরূপ, একটি রিমাইন্ডার অ্যাপ লোকাল নোটিফিকেশন ব্যবহার করতে পারে ব্যবহারকারীকে কোনো টাস্ক সম্পন্ন করার সময় মনে করিয়ে দেওয়ার জন্য।

Local Notifications কিভাবে কাজ করে?

  • অ্যাপ্লিকেশন চালু থাকলেও বা বন্ধ থাকলেও Local Notification ট্রিগার হতে পারে, তবে এটি সরাসরি ডিভাইস থেকে আসে, কোনো সার্ভারের প্রয়োজন হয় না।
  • এটি অ্যাপের অভ্যন্তরীণ সময়সূচি বা নির্দিষ্ট ইভেন্টের উপর নির্ভর করে।

Local Notification সেটআপ করার উদাহরণ

import UserNotifications

func scheduleLocalNotification() {
    // নোটিফিকেশন অনুমতি চাওয়া
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
        if granted {
            print("Notification permission granted.")
            self.createLocalNotification()
        } else {
            print("Notification permission denied.")
        }
    }
}

func createLocalNotification() {
    // নোটিফিকেশন কন্টেন্ট সেট করা
    let content = UNMutableNotificationContent()
    content.title = "Reminder"
    content.body = "Don't forget to complete your task!"
    content.sound = .default
    
    // ৫ সেকেন্ড পরে নোটিফিকেশন ট্রিগার করা
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    
    // নোটিফিকেশন রিকোয়েস্ট তৈরি করা
    let request = UNNotificationRequest(identifier: "reminder", content: content, trigger: trigger)
    
    // নোটিফিকেশন সিডিউল করা
    UNUserNotificationCenter.current().add(request) { error in
        if let error = error {
            print("Error scheduling notification: \(error.localizedDescription)")
        } else {
            print("Local Notification scheduled.")
        }
    }
}
  • requestAuthorization: নোটিফিকেশন পাঠানোর আগে ব্যবহারকারীর অনুমতি চাওয়া হয়।
  • UNMutableNotificationContent: নোটিফিকেশনের কন্টেন্ট সেট করা হয় (শিরোনাম, বার্তা, শব্দ ইত্যাদি)।
  • UNTimeIntervalNotificationTrigger: নির্দিষ্ট সময় পরে নোটিফিকেশন ট্রিগার করা হয়।
  • UNNotificationRequest: নোটিফিকেশন রিকোয়েস্ট তৈরি করা হয় এবং সিডিউল করা হয়।

Push Notifications

Push Notifications হলো এমন একটি নোটিফিকেশন যা অ্যাপের সার্ভার বা থার্ড-পার্টি সার্ভার থেকে ডিভাইসে পাঠানো হয়। এটি সাধারণত অ্যাপ্লিকেশনের বাইরে থেকে ডেটা আপডেট, রিমাইন্ডার, বা ইনফরমেশন ব্যবহারকারীকে জানাতে ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি নিউজ অ্যাপ নতুন সংবাদ আপডেটের জন্য Push Notification ব্যবহার করতে পারে।

Push Notifications কিভাবে কাজ করে?

  • Push Notifications APNs (Apple Push Notification Service) এর মাধ্যমে কাজ করে। ডেভেলপারকে অ্যাপল থেকে একটি Push Notification সনদ (certificate) তৈরি করতে হয় এবং সার্ভারের সাথে এটি ইন্টিগ্রেট করতে হয়।
  • Push Notifications পাঠাতে একটি সার্ভার বা ব্যাকএন্ড সিস্টেম প্রয়োজন হয়, যা APNs এর সাথে যোগাযোগ করে।
  • এটি ক্লাউড বা রিমোট সার্ভার থেকে ব্যবহারকারীকে নোটিফিকেশন পাঠায়, এমনকি যখন অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে থাকে বা সম্পূর্ণ বন্ধ থাকে।

Push Notification সেটআপের জন্য প্রয়োজনীয় ধাপসমূহ

APNs Certificate তৈরি:

  • অ্যাপল ডেভেলপার অ্যাকাউন্টে লগইন করে অ্যাপ আইডেন্টিফায়ার তৈরি করুন।
  • APNs সার্টিফিকেট তৈরি করুন এবং এটি ডাউনলোড করুন।

Firebase Cloud Messaging (FCM) বা নিজস্ব সার্ভার ব্যবহার করে অ্যাপ্লিকেশনে Push Notification ইন্টিগ্রেট করুন।

অ্যাপ্লিকেশনে Push Notification কোড সেটআপ করা:

import UIKit
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // নোটিফিকেশন অনুমতি চাওয়া
        UNUserNotificationCenter.current().delegate = self
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
            if granted {
                DispatchQueue.main.async {
                    application.registerForRemoteNotifications()
                }
            }
        }
        return true
    }
    
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        // ডিভাইস টোকেন সার্ভারে পাঠানো
        print("Device Token: \(deviceToken)")
    }

    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
        print("Failed to register: \(error.localizedDescription)")
    }
    
    // Push Notification রিসিভ করা হলে
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .sound, .badge])
    }
}
  • requestAuthorization: Push Notification পাঠানোর জন্য ব্যবহারকারীর অনুমতি চাওয়া হয়।
  • registerForRemoteNotifications: ডিভাইসটিকে Push Notification রিসিভ করার জন্য রেজিস্টার করা হয়।
  • didRegisterForRemoteNotificationsWithDeviceToken: সফলভাবে রেজিস্টার হলে, ডিভাইস টোকেন পাওয়া যায় যা সার্ভারে পাঠানো হয়।
  • willPresent: নোটিফিকেশন রিসিভ করার পর এটি কিভাবে প্রদর্শিত হবে তা নির্ধারণ করা হয়।

Local Notifications এবং Push Notifications এর পার্থক্য

বৈশিষ্ট্যLocal NotificationPush Notification
উৎসঅ্যাপ্লিকেশনসার্ভার বা রিমোট সোর্স
ইন্টারনেট সংযোগপ্রয়োজন নেইপ্রয়োজন
নিয়ন্ত্রণঅ্যাপের সম্পূর্ণ নিয়ন্ত্রণসার্ভারের নিয়ন্ত্রণে
ব্যবহাররিমাইন্ডার, সময় ভিত্তিক কাজরিমোট আপডেট, রিয়েল টাইম ইনফরমেশন

Notifications ব্যবহারের সেরা পদ্ধতি

  1. প্রাসঙ্গিক এবং প্রয়োজনীয় নোটিফিকেশন পাঠান, যেন ব্যবহারকারী বিরক্ত না হয়।
  2. প্রাইভেসি সম্মান করুন: সেনসিটিভ ডেটা নোটিফিকেশনের মাধ্যমে প্রকাশ করবেন না।
  3. Usage Description: Info.plist-এ ব্যবহারকারীর জন্য স্পষ্ট এবং সঠিক Usage Description প্রদান করুন।
  4. ব্যবহারকারীর অনুমতি: নোটিফিকেশন অনুমতির জন্য সঠিকভাবে প্রম্পট দিন এবং কারণ স্পষ্ট করুন, যাতে ব্যবহারকারী এটি সহজে অনুমতি দিতে পারে।

উপসংহার

Local Notifications এবং Push Notifications ব্যবহার করে iOS অ্যাপে ব্যবহারকারীদের সঙ্গে ইন্টারঅ্যাক্ট করা যায় এবং গুরুত্বপূর্ণ তথ্য জানানো যায়। Local Notifications সহজে অ্যাপের ভেতরে নিয়ন্ত্রণ করা যায়, তবে Push Notifications সার্ভার ইন্টিগ্রেশন প্রয়োজন করে এবং ব্যবহারকারীকে আরও রিয়েল টাইম তথ্য প্রদানে সক্ষম।

Content added By

UNUserNotificationCenter দিয়ে Notification Management

261

UNUserNotificationCenter হলো iOS এর UserNotifications Framework এর একটি অংশ, যা Local এবং Remote Notifications ম্যানেজ করতে সাহায্য করে। এটি iOS 10 এবং এর পরবর্তী ভার্সনগুলোতে ব্যবহার করা হয়। UNUserNotificationCenter ব্যবহার করে আমরা অ্যাপে Notifications এর কনফিগারেশন, সিডিউলিং, ডেলিভারি এবং হ্যান্ডলিং করতে পারি। নিচে UNUserNotificationCenter দিয়ে Notification Management এর বিস্তারিত আলোচনা করা হলো।

UNUserNotificationCenter দিয়ে Notification Management

UNUserNotificationCenter এর মাধ্যমে আমরা ব্যবহারকারীর কাছে Local এবং Remote Notifications পাঠাতে এবং এগুলোর ওপর সম্পূর্ণ নিয়ন্ত্রণ রাখতে পারি। আমরা Notifications এর জন্য অনুমতি চাওয়া থেকে শুরু করে, সেগুলোর কন্টেন্ট তৈরি এবং পাঠানো, কাস্টম অ্যাকশন যুক্ত করা, এবং বিভিন্ন সিচুয়েশনে Notifications হ্যান্ডল করা পর্যন্ত সবকিছু করতে পারি।

Step-by-Step Implementation of UNUserNotificationCenter

Step 1: Import UserNotifications Framework

প্রথমে আপনার ViewController বা AppDelegate ফাইলে UserNotifications Framework ইমপোর্ট করুন:

import UserNotifications

Step 2: Notification Authorization Request করা

Notifications পাঠানোর আগে ব্যবহারকারীর কাছ থেকে অনুমতি চেয়ে নিতে হয়। সাধারণত, এটি অ্যাপের লঞ্চের সময় বা নির্দিষ্ট কোনো ইভেন্টের সময় চাওয়া হয়।

func requestNotificationPermission() {
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
        if granted {
            print("Permission granted")
        } else {
            print("Permission denied")
        }
    }
}

ব্যাখ্যা:

  • requestAuthorization: এটি ব্যবহার করে আমরা ব্যবহারকারীর কাছ থেকে অনুমতি চেয়ে থাকি।
  • options: এখানে আমরা নির্ধারণ করি যে নোটিফিকেশনটি আলার্ট, সাউন্ড, এবং ব্যাজসহ প্রদর্শিত হবে কি না।
  • Completion Handler: এই ব্লকটি ব্যবহারকারীর অনুমতি গ্রান্ট বা ডিনাই করার পর কাজ করে।

Step 3: UNUserNotificationCenterDelegate সেটআপ করা

Notifications হ্যান্ডল করার জন্য আমাদের UNUserNotificationCenterDelegate মেনে চলতে হবে। AppDelegate বা যেকোনো ViewController এ ডেলিগেট সেট করতে পারেন।

UNUserNotificationCenter.current().delegate = self

AppDelegate বা ViewController এ UNUserNotificationCenterDelegate প্রোটোকল যুক্ত করুন এবং নিচের ডেলিগেট মেথডগুলো ইমপ্লিমেন্ট করুন:

extension AppDelegate: UNUserNotificationCenterDelegate {
    // যখন নোটিফিকেশন ডেলিভার করা হয়
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        // নোটিফিকেশন ফোরগ্রাউন্ডে থাকলেও প্রদর্শিত হবে
        completionHandler([.banner, .sound, .badge])
    }

    // যখন নোটিফিকেশন ইন্টারঅ্যাকশন হয়
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        print("Notification interacted with")
        completionHandler()
    }
}

ব্যাখ্যা:

  • willPresent: এই মেথডটি তখন কল হয়, যখন অ্যাপটি ফোরগ্রাউন্ডে থাকে এবং নোটিফিকেশন ডেলিভার করা হয়। এখানে আমরা নির্ধারণ করতে পারি, নোটিফিকেশনটি ব্যানার, সাউন্ড বা ব্যাজ সহ দেখানো হবে কি না।
  • didReceive: এই মেথডটি তখন কল হয়, যখন ব্যবহারকারী নোটিফিকেশনটির সাথে ইন্টারঅ্যাকশন করে।

Step 4: Local Notification সেটআপ এবং শিডিউল করা

Local Notification সেটআপ করার জন্য UNUserNotificationCenter এর মাধ্যমে একটি UNMutableNotificationContent তৈরি করা হয়, যেখানে কন্টেন্ট, শিডিউল, এবং কাস্টমাইজেশন করা যায়।

func scheduleLocalNotification() {
    // Notification কন্টেন্ট তৈরি করা
    let content = UNMutableNotificationContent()
    content.title = "Reminder"
    content.body = "This is your scheduled reminder notification."
    content.sound = UNNotificationSound.default

    // Time Interval Trigger তৈরি করা (৫ সেকেন্ড পরে ট্রিগার হবে)
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    
    // Notification Request তৈরি করা
    let request = UNNotificationRequest(identifier: "localNotification", content: content, trigger: trigger)
    
    // Notification Center এ Request যুক্ত করা
    UNUserNotificationCenter.current().add(request) { error in
        if let error = error {
            print("Error scheduling notification: \(error)")
        } else {
            print("Notification scheduled successfully!")
        }
    }
}

ব্যাখ্যা:

  • UNMutableNotificationContent: নোটিফিকেশন কন্টেন্ট সেটআপ করতে ব্যবহার করা হয়। এখানে আমরা নোটিফিকেশনের টাইটেল, বডি, এবং সাউন্ড সেট করেছি।
  • UNTimeIntervalNotificationTrigger: এটি একটি নির্দিষ্ট সময় পরে নোটিফিকেশন ট্রিগার করতে সাহায্য করে। এখানে ৫ সেকেন্ড পরে নোটিফিকেশন ট্রিগার হবে।
  • UNNotificationRequest: এটি একটি নোটিফিকেশন রিকোয়েস্ট তৈরি করে এবং UNUserNotificationCenter এ যুক্ত করে।

Step 5: Category এবং Custom Actions যোগ করা

কিছু ক্ষেত্রে আমরা নোটিফিকেশনে কাস্টম অ্যাকশন যুক্ত করতে চাই, যেমন: "Snooze", "Mark as Done" ইত্যাদি। এজন্য নোটিফিকেশন কন্টেন্টে Category যোগ করতে হয়।

func setupNotificationCategory() {
    // অ্যাকশন তৈরি করা
    let snoozeAction = UNNotificationAction(identifier: "SNOOZE_ACTION", title: "Snooze", options: [])
    let doneAction = UNNotificationAction(identifier: "DONE_ACTION", title: "Mark as Done", options: [.foreground])
    
    // ক্যাটাগরি তৈরি করা
    let category = UNNotificationCategory(identifier: "REMINDER_CATEGORY", actions: [snoozeAction, doneAction], intentIdentifiers: [], options: [])
    
    // ক্যাটাগরি রেজিস্টার করা
    UNUserNotificationCenter.current().setNotificationCategories([category])
}

// Notification সেটআপ করার সময় ক্যাটাগরি সেট করা
func scheduleLocalNotificationWithCategory() {
    let content = UNMutableNotificationContent()
    content.title = "Reminder"
    content.body = "This is your scheduled reminder notification with actions."
    content.sound = UNNotificationSound.default
    content.categoryIdentifier = "REMINDER_CATEGORY" // ক্যাটাগরি আইডি সেট করা

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    let request = UNNotificationRequest(identifier: "localNotification", content: content, trigger: trigger)
    
    UNUserNotificationCenter.current().add(request) { error in
        if let error = error {
            print("Error scheduling notification: \(error)")
        }
    }
}

ব্যাখ্যা:

  • UNNotificationAction: অ্যাকশন তৈরি করা হয়েছে, যেমন: "Snooze" এবং "Mark as Done"।
  • UNNotificationCategory: ক্যাটাগরি তৈরি করে, সেটি অ্যাকশনসহ রেজিস্টার করা হয়েছে।
  • categoryIdentifier: নোটিফিকেশন কন্টেন্টে ক্যাটাগরি আইডেন্টিফায়ার সেট করা হয়েছে।

Step 6: Remote Notifications হ্যান্ডল করা

Remote Notifications (Push Notifications) সেটআপ করার জন্য AppDelegate এ UNUserNotificationCenterDelegate মেথড যুক্ত করতে হবে।

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
    let token = tokenParts.joined()
    print("Device Token: \(token)")
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    print("Failed to register: \(error)")
}

ব্যাখ্যা:

  • didRegisterForRemoteNotificationsWithDeviceToken: এই মেথডটি ডিভাইস টোকেন সংগ্রহ করে, যা সার্ভারে পাঠাতে হয়।
  • didFailToRegisterForRemoteNotificationsWithError: রেজিস্ট্রেশন ব্যর্থ হলে এটি কল হয়।

Notifications এর সেরা চর্চা

  1. ব্যবহারকারীর অনুমতি সঠিকভাবে নিন: Notifications পাঠানোর আগে ব্যবহারকারীর কাছ থেকে যথাযথ অনুমতি চেয়ে নিন।
  2. Notification Categories এবং Actions ব্যবহার করুন: ব্যবহারকারীদের ইন্টারঅ্যাকশন বাড়াতে কাস্টম অ্যাকশন যুক্ত করুন।
  3. Error Handling নিশ্চিত করুন: Notification scheduling এর সময় সবসময় এরর চেক এবং হ্যান্ডল করুন।
  4. Local এবং Remote Notifications এর পার্থক্য জানুন: Local Notifications সরাসরি অ্যাপ থেকে শিডিউল করা হয়, যেখানে Remote Notifications সার্ভার থেকে পাঠানো হয়।

উপসংহার

UNUserNotificationCenter ব্যবহার করে iOS অ্যাপ্লিকেশনে Notifications ম্যানেজ করা খুবই সহজ। এটি Local এবং Remote Notifications এর জন্য শক্তিশালী সাপোর্ট প্রদান করে। Notifications এর মাধ্যমে ব্যবহারকারীদের কাছে গুরুত্বপূর্ণ তথ্য পাঠানো যায় এবং কাস্টম অ্যাকশন যুক্ত করে ইন্টারঅ্যাকশন বাড়ানো যায়, যা অ্যাপ্লিকেশনকে আরও কার্যকর এবং ব্যবহারকারীর কাছে আরও উপযোগী করে তোলে।

Content added By

Background Fetch এবং Silent Notifications

325

iOS অ্যাপ্লিকেশনে Background Fetch এবং Silent Notifications (Silent Push Notifications) দুটি পদ্ধতি ব্যবহার করে ব্যাকগ্রাউন্ডে ডেটা আপডেট করা যায়। এগুলো ব্যবহার করে আমরা অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে থাকলেও রিফ্রেশ এবং ডেটা সিঙ্ক্রোনাইজ করতে পারি, যা অ্যাপকে আরও কার্যকর এবং ব্যবহারকারীর কাছে সর্বদা আপডেটেড রাখে। নিচে Background Fetch এবং Silent Notifications নিয়ে বিস্তারিত আলোচনা করা হলো।

১. Background Fetch

Background Fetch iOS এ একটি বৈশিষ্ট্য যা অ্যাপকে নির্দিষ্ট সময় অন্তর ব্যাকগ্রাউন্ডে ডেটা ফেচ করার সুযোগ দেয়। এটি বিশেষভাবে নিউজ অ্যাপ, সোশ্যাল মিডিয়া অ্যাপ, এবং অন্যান্য ডেটা-ইনটেনসিভ অ্যাপগুলোর জন্য উপযুক্ত, যেখানে অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে থাকা অবস্থায় নিয়মিত ডেটা আপডেট করতে হবে।

Background Fetch কনফিগারেশন

Background Fetch কনফিগার করার জন্য Xcode এবং AppDelegate এ কিছু সেটআপ করতে হবে।

Step 1: Background Modes সক্ষম করা

  1. Xcode এ আপনার প্রজেক্ট খুলুন।
  2. Capabilities ট্যাবে যান।
  3. Background Modes চালু করুন এবং Background Fetch অপশনটি সিলেক্ট করুন।

Step 2: App Delegate এ কনফিগার করা

AppDelegate এ Background Fetch সেটআপ করার জন্য কোড যোগ করুন:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Background Fetch এর জন্য ইন্টারভাল সেট করা
        application.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
        return true
    }
    
    func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        // ব্যাকগ্রাউন্ডে ডেটা ফেচ করার জন্য একটি ফাংশন কল করা
        fetchDataInBackground { newData in
            if newData {
                completionHandler(.newData) // নতুন ডেটা পাওয়া গেছে
            } else {
                completionHandler(.noData) // কোনো নতুন ডেটা নেই
            }
        }
    }
    
    // ব্যাকগ্রাউন্ডে ডেটা ফেচ করার একটি ফাংশন
    func fetchDataInBackground(completion: @escaping (Bool) -> Void) {
        // এখানে আপনার নেটওয়ার্ক রিকোয়েস্ট বা ডেটা প্রসেসিং যুক্ত করুন
        // উদাহরণস্বরূপ, API থেকে ডেটা ফেচ করা
        completion(true) // নতুন ডেটা পাওয়া গেছে কিনা তা রিটার্ন করুন
    }
}

ব্যাখ্যা:

  • setMinimumBackgroundFetchInterval: এটি Background Fetch এর ইন্টারভাল সেট করে, যেটি ব্যাটারি এবং রিসোর্স ব্যবস্থাপনার ওপর নির্ভর করে।
  • performFetchWithCompletionHandler: এটি ব্যাকগ্রাউন্ডে চালিত হয় এবং নতুন ডেটা ফেচ করার জন্য ব্যবহৃত হয়।
  • fetchDataInBackground: এটি একটি কাস্টম ফাংশন যা ডেটা ফেচ করে এবং ফলাফল রিটার্ন করে।

Background Fetch এর সুবিধা

  1. Automatic Execution: iOS স্বয়ংক্রিয়ভাবে Background Fetch পরিচালনা করে, তাই ডেভেলপারকে নির্দিষ্ট সময়সূচি নিয়ে ভাবতে হয় না।
  2. Efficient Resource Management: iOS ব্যাটারি এবং রিসোর্স ব্যবস্থাপনা নিশ্চিত করে, তাই এটি ব্যাটারি এবং পারফরমেন্সের জন্য উপযুক্ত।
  3. Simple Setup: এটি সহজেই AppDelegate এ কনফিগার করা যায়।

২. Silent Notifications (Silent Push Notifications)

Silent Push Notifications ব্যাকগ্রাউন্ডে অ্যাপের ডেটা আপডেট করতে এবং সিঙ্ক্রোনাইজ করতে সাহায্য করে। এটি ব্যবহারকারীকে কোনো নোটিফিকেশন দেখায় না, বরং অ্যাপ্লিকেশনকে ব্যাকগ্রাউন্ডে কাজ করতে দেয়।

Silent Push Notifications কনফিগারেশন

Silent Push Notifications সেটআপ করতে আপনার অ্যাপ এবং সার্ভার উভয় জায়গায় কিছু কনফিগারেশন প্রয়োজন।

Step 1: Background Modes সক্ষম করা

  1. Xcode এ Capabilities ট্যাবে যান।
  2. Background Modes চালু করুন এবং Remote Notifications অপশনটি সিলেক্ট করুন।

Step 2: Info.plist ফাইলে পরিবর্তন করা

Info.plist এ নিচের এন্ট্রি যুক্ত করুন:

  • Key: UIBackgroundModes
  • Value: remote-notification

Step 3: App Delegate এ Silent Push Notification হ্যান্ডল করা

Silent Push Notification হ্যান্ডল করার জন্য AppDelegate এ নিচের মতো কোড যোগ করুন:

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
    
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        // ব্যাকগ্রাউন্ডে ডেটা ফেচ বা প্রসেস করা
        fetchDataInBackground { success in
            if success {
                completionHandler(.newData) // নতুন ডেটা পাওয়া গেছে
            } else {
                completionHandler(.noData) // কোনো নতুন ডেটা নেই
            }
        }
    }
    
    func fetchDataInBackground(completion: @escaping (Bool) -> Void) {
        // নেটওয়ার্ক রিকোয়েস্ট বা ডেটা প্রসেসিং কোড যুক্ত করুন
        completion(true)
    }
}

Step 4: Server থেকে Silent Push Notification পাঠানো

সার্ভার থেকে JSON পে-লোড পাঠাতে হবে, যা অ্যাপ্লিকেশনে ব্যাকগ্রাউন্ড কাজ করতে নির্দেশ দেবে:

{
    "aps": {
        "content-available": 1
    },
    "customData": {
        "type": "update",
        "value": "New data available"
    }
}

ব্যাখ্যা:

  • "content-available": 1: এটি Silent Push Notification নিশ্চিত করে, যা অ্যাপকে ব্যাকগ্রাউন্ডে চালাতে সাহায্য করে।
  • "customData": এখানে কাস্টম ডেটা পাঠানো যায়, যা ব্যাকগ্রাউন্ডে প্রসেস করা হবে।

Silent Push Notification এর সুবিধা

  1. Background Execution: এটি ব্যাকগ্রাউন্ডে ডেটা আপডেট এবং প্রসেস করতে পারদর্শী।
  2. No User Interaction Required: এটি ব্যবহারকারীর নোটিফিকেশন দেখানোর প্রয়োজন ছাড়াই কাজ করে, যা ডেটা সিঙ্ক্রোনাইজেশনের জন্য উপযুক্ত।
  3. Efficient Updates: এটি ব্যাটারি এবং রিসোর্স ব্যবস্থাপনা মেনে ডেটা আপডেট পরিচালনা করে।

Background Fetch এবং Silent Push Notifications এর সেরা চর্চা

  1. Minimum Background Usage: ব্যাটারি এবং রিসোর্স ব্যবহারের দিকে লক্ষ রেখে শুধু প্রয়োজনীয় ডেটা ফেচ বা প্রসেস করুন।
  2. Error Handling নিশ্চিত করুন: Background Fetch এবং Silent Push এ সবসময় এরর হ্যান্ডলিং নিশ্চিত করুন এবং প্রয়োজনে রিট্রাই লজিক যুক্ত করুন।
  3. Network Efficiency: ব্যাকগ্রাউন্ডে কাজ করার সময় অ্যাপের নেটওয়ার্ক ব্যবহারের কার্যকারিতা নিশ্চিত করুন।
  4. User Permissions: Background Fetch এবং Remote Notifications এর আগে ব্যবহারকারীর অনুমতি নিশ্চিত করুন।

Background Fetch এবং Silent Push Notifications এর মধ্যে পার্থক্য

বৈশিষ্ট্যBackground FetchSilent Push Notification
Trigger MethodiOS নিজে স্বয়ংক্রিয়ভাবে শিডিউল করেRemote সার্ভার থেকে ট্রিগার করা হয়
User Interactionব্যবহারকারীর নোটিফিকেশন দেখায় নাব্যবহারকারীর নোটিফিকেশন দেখায় না
Custom Dataকেবলমাত্র ডিভাইসে ডেটা ফেচ করেকাস্টম ডেটা পে-লোড দিয়ে কাজ পরিচালনা করে
ControliOS এর উপর নির্ভর করেসার্ভার নিয়ন্ত্রিত

উপসংহার

Background Fetch এবং Silent Push Notifications iOS অ্যাপ্লিকেশনকে ব্যাকগ্রাউন্ডে ডেটা আপডেট এবং সিঙ্ক্রোনাইজ করার একটি কার্যকর উপায় প্রদান করে। Background Fetch সিস্টেম দ্বারা নিয়ন্ত্রিত হলেও, Silent Push Notification সার্ভার দ্বারা নিয়ন্ত্রিত হয় এবং আরও কাস্টমাইজড সাপোর্ট প্রদান করে। ডেভেলপারদের জন্য এটি অত্যন্ত গুরুত্বপূর্ণ টেকনিক, যা অ্যাপ্লিকেশনকে সর্বদা আপডেটেড এবং ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে তুলতে পারে।

Content added By

Background Tasks এবং Background Modes

308

Background Tasks এবং Background Modes iOS অ্যাপ্লিকেশনের এমন ফিচার, যা অ্যাপ্লিকেশনকে ব্যাকগ্রাউন্ডে চলমান রাখতে এবং নির্দিষ্ট কাজ সম্পন্ন করতে সহায়তা করে, এমনকি যখন অ্যাপটি সক্রিয়ভাবে ব্যবহৃত হয় না। iOS অ্যাপ্লিকেশনে অ্যাপ স্লিপ বা ব্যাকগ্রাউন্ডে থাকাকালীন নির্দিষ্ট কাজ করার জন্য Apple এই ফিচারগুলো প্রদান করে, তবে সিস্টেম রিসোর্স এবং ব্যাটারি লাইফ সুরক্ষার জন্য এর ব্যবহার সীমিত এবং নিয়ন্ত্রিত।

Background Modes

Background Modes হল iOS অ্যাপের একটি ফিচার, যা অ্যাপ্লিকেশনকে নির্দিষ্ট কাজ বা সার্ভিস চালু রাখতে ব্যাকগ্রাউন্ডে চলমান থাকতে দেয়। iOS-এ কিছু নির্দিষ্ট কাজ ব্যাকগ্রাউন্ডে চালানোর অনুমতি দেওয়া হয়, এবং এ জন্য অ্যাপ্লিকেশনটিকে Info.plist ফাইলে নির্দিষ্ট Background Modes সক্ষম করতে হয়।

iOS-এ সাধারণ Background Modes

Background Fetch: এটি অ্যাপকে নির্দিষ্ট সময়ে ব্যাকগ্রাউন্ডে ডেটা ফেচ বা আপডেট করতে দেয়। উদাহরণস্বরূপ, নিউজ অ্যাপগুলো নতুন আর্টিকেল ডাউনলোড করতে পারে যাতে ব্যবহারকারী পরবর্তীবার অ্যাপটি খুললে সর্বশেষ তথ্য দেখতে পায়।

Background Processing: iOS 13 এবং তার পরবর্তী সংস্করণে BGAppRefreshTask এবং BGProcessingTask এর মাধ্যমে নির্দিষ্ট কাজ বা প্রসেসিং ব্যাকগ্রাউন্ডে চালানো যায়।

Location Updates: অ্যাপ যদি ব্যাকগ্রাউন্ডে লোকেশন সার্ভিস ব্যবহার করতে চায়, তবে এটি Location Updates সক্ষম করতে পারে। উদাহরণস্বরূপ, একটি ট্র্যাকিং অ্যাপ্লিকেশন ব্যবহারকারীর অবস্থান ট্র্যাক করতে পারে, এমনকি যখন অ্যাপটি ব্যাকগ্রাউন্ডে থাকে।

Audio: অ্যাপ যদি ব্যাকগ্রাউন্ডে অডিও প্লেব্যাক চালাতে চায় (যেমন: মিউজিক বা পডকাস্ট অ্যাপ), তবে এটি Audio মোড সক্ষম করতে পারে।

VoIP: ভয়েস ওভার ইন্টারনেট প্রোটোকল (VoIP) অ্যাপ ব্যাকগ্রাউন্ডে চালানোর জন্য এটি ব্যবহার করা হয়, যেমন কল রিসিভ করার সময়।

Bluetooth Connectivity: ব্যাকগ্রাউন্ডে ব্লুটুথ ডিভাইসের সাথে কানেক্টেড থাকার জন্য এই মোড ব্যবহার করা হয়।

Push Notifications: Remote Push Notifications ব্যবহার করে অ্যাপ ব্যাকগ্রাউন্ডে টাস্ক ট্রিগার করতে পারে, যেমন চ্যাট মেসেজ আপডেট করা।

Background Modes সেটআপ করার ধাপসমূহ

  1. Info.plist ফাইলে, Required Background Modes কির নাম দিয়ে একটি নতুন এন্ট্রি যোগ করুন।
  2. আপনি কোন কাজ করতে চান তার উপর নির্ভর করে প্রয়োজনীয় মোডগুলি নির্বাচন করুন:
    • App registers for location updates
    • App downloads content from the network
    • App plays audio or streams audio/video using AirPlay

Background Modes উদাহরণ: Background Fetch ব্যবহার

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Background Fetch সক্ষম করা
        application.setMinimumBackgroundFetchInterval(UIApplication.backgroundFetchIntervalMinimum)
        return true
    }

    func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        // ব্যাকগ্রাউন্ডে ডেটা ফেচ করার লজিক
        fetchDataFromServer { success in
            if success {
                completionHandler(.newData)
            } else {
                completionHandler(.failed)
            }
        }
    }

    func fetchDataFromServer(completion: @escaping (Bool) -> Void) {
        // API কল বা ডেটা ফেচ লজিক এখানে লিখুন
        completion(true)
    }
}
  • setMinimumBackgroundFetchInterval: অ্যাপের ব্যাকগ্রাউন্ড ফেচ ইন্টারভাল সেট করে।
  • performFetchWithCompletionHandler: ব্যাকগ্রাউন্ড ফেচের সময় সিস্টেম এই মেথড কল করে, যেখানে ডেটা ফেচ করার লজিক লেখা হয়।

Background Tasks (iOS 13+)

Background Tasks একটি নতুন API যা iOS 13 এবং এর পরবর্তী সংস্করণে প্রবর্তিত হয়েছে। এটি আরও নির্ভরযোগ্য এবং নিয়ন্ত্রিত পদ্ধতিতে ব্যাকগ্রাউন্ড কাজ ম্যানেজ করার সুযোগ দেয়। BGAppRefreshTask এবং BGProcessingTask এর মাধ্যমে ডেভেলপাররা নির্দিষ্ট কাজ নির্দিষ্ট সময়ে বা নির্দিষ্ট শর্তে ব্যাকগ্রাউন্ডে চালাতে পারেন।

BGAppRefreshTask এবং BGProcessingTask

  1. BGAppRefreshTask: হালকা কাজ বা ডেটা ফেচিংয়ের জন্য ব্যবহৃত হয় যা দ্রুত সম্পন্ন করা যায় এবং অতিরিক্ত ব্যাটারি ব্যবহার করে না।
  2. BGProcessingTask: ভারী কাজ বা দীর্ঘ সময়ের জন্য প্রসেসিংয়ের জন্য ব্যবহৃত হয়, যেমন বড় ফাইল ডাউনলোড বা ডেটা প্রসেসিং।

Background Tasks ব্যবহার করার উদাহরণ

Background Modes সক্রিয় করুন এবং Background Processing মোড নির্বাচন করুন।

Info.plist ফাইলে Permitted background task scheduler identifiers যুক্ত করুন, যা টাস্কগুলিকে ইউনিক আইডেন্টিফায়ার দিয়ে চিনতে সাহায্য করবে।

BGAppRefreshTask বা BGProcessingTask সেটআপ করুন:

import BackgroundTasks

func scheduleAppRefresh() {
    let request = BGAppRefreshTaskRequest(identifier: "com.example.app.refresh")
    request.earliestBeginDate = Date(timeIntervalSinceNow: 15 * 60) // ১৫ মিনিট পরে

    do {
        try BGTaskScheduler.shared.submit(request)
    } catch {
        print("Failed to submit BGAppRefreshTask: \(error)")
    }
}

// AppDelegate এ বা SceneDelegate এ টাস্ক রেজিস্টার করা
func registerBackgroundTasks() {
    BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.app.refresh", using: nil) { task in
        self.handleAppRefreshTask(task: task as! BGAppRefreshTask)
    }
}

func handleAppRefreshTask(task: BGAppRefreshTask) {
    // ডেটা ফেচিং বা অন্য কাজ শুরু করা
    fetchDataFromServer { success in
        task.setTaskCompleted(success: success)
    }

    // পরবর্তী টাস্ক রেজিস্টার করা
    scheduleAppRefresh()
}
  • BGAppRefreshTaskRequest: এটি একটি ব্যাকগ্রাউন্ড রিফ্রেশ টাস্ক রিকোয়েস্ট তৈরি করে।
  • BGTaskScheduler: এটি ব্যাকগ্রাউন্ড টাস্কগুলোকে স্কেজুল এবং হ্যান্ডেল করে।
  • setTaskCompleted: টাস্ক শেষ হলে সিস্টেমকে জানাতে হয় যে টাস্ক সফলভাবে সম্পন্ন হয়েছে।

Background Tasks এবং Background Modes এর মধ্যে পার্থক্য

বৈশিষ্ট্যBackground ModesBackground Tasks
প্রাপ্যতাiOS এর পুরোনো সংস্করণেও পাওয়া যায়iOS 13+
ব্যবহারনির্দিষ্ট কাজ বা সার্ভিসের জন্যডাইনামিক এবং নির্দিষ্ট শর্তের কাজের জন্য
কন্ট্রোলঅ্যাপের জন্য বিশেষ করে ফিচার যুক্ত করতে দেয়কাস্টম এবং নির্দিষ্ট কাজ স্কেজুল করতে দেয়

Background Tasks ব্যবহারের সেরা পদ্ধতি

  1. সঠিক Task Identifier ব্যবহার করুন: প্রতিটি টাস্কের জন্য ইউনিক আইডেন্টিফায়ার দিন, যাতে সিস্টেম সহজে টাস্কগুলি ট্র্যাক করতে পারে।
  2. শুধুমাত্র প্রয়োজনীয় Task ব্যবহার করুন: অপ্রয়োজনীয় টাস্ক বা ব্যাকগ্রাউন্ড প্রসেস এড়িয়ে চলুন, যা সিস্টেমের রিসোর্স এবং ব্যাটারি ক্ষতি করতে পারে।
  3. Task Expiration Handle করুন: টাস্ক এক্সপায়ার হলে (যেমন: সিস্টেম রিসোর্সের ঘাটতি) কিভাবে হ্যান্ডেল করা হবে তা নিশ্চিত করুন।
  4. ব্যাটারি সাশ্রয় নিশ্চিত করুন: ব্যাটারির ব্যবহার সীমিত রাখতে এবং অ্যাপের কর্মক্ষমতা সুরক্ষিত রাখতে ছোট এবং দ্রুত সম্পন্ন করা যায় এমন কাজ তৈরি করুন।

উপসংহার

Background Tasks এবং Background Modes iOS অ্যাপ্লিকেশনে ব্যাকগ্রাউন্ড কাজ সঠিকভাবে ম্যানেজ করার শক্তিশালী উপায়। ডেভেলপাররা সঠিকভাবে এই ফিচারগুলো ব্যবহার করে অ্যাপের পারফরম্যান্স এবং ব্যাটারি ব্যবহার সঠিকভাবে অপ্টিমাইজ করতে পারেন, ফলে ব্যবহারকারীর অভিজ্ঞতা আরও ভালো হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...